var express = require('express'); //引入express
var app = express(); // 创建实例app
var fs = require("fs"); //引入fs，fs 是node中一个文件操作模块，包括文件创建，删除，查询，读取，写入。
 
var bodyParser = require('body-parser'); // 这个模块是获取post请求传过来的数据。
var multer  = require('multer'); //multer - node.js 中间件，用于处理 enctype="multipart/form-data"（设置表单的MIME编码）的表单数据。
 
app.use('/public', express.static('public')); // 设置静态文件的中间件
app.use(bodyParser.urlencoded({ extended: false })); // 判断请求体是不是json，不是的话把请求体转化为对象
app.use(multer({ dest: '/tmp/'}).array('file'));
 
 //设置允许跨域访问该服务.

app.all('*', function (req, res, next) {

res.header('Access-Control-Allow-Origin', '*');

//Access-Control-Allow-Headers ,可根据浏览器的F12查看,把对应的粘贴在这里就行

res.header('Access-Control-Allow-Headers', '*');

res.header('Access-Control-Allow-Methods', '*');

// res.header('Content-Type','*');
 if(req.method === "OPTIONS") res.send(200);/*让options请求快速返回*/
  else {
    next();
  } 


});
app.get('/index.htm', function (req, res) {
   res.sendFile( __dirname + "/" + "index.htm" );
})
 // 上传文件api
app.post('/file_upload', function (req, res) {
   console.log(req.files);  // 上传的文件信息
//    const response = {}
   let response = {}
   for(let i=0;i<req.files.length;i++){
      fs.readFile( req.files[i].path, function (err, data) {
            let des_file = "./public"+"/" + req.files[i].originalname;//存放路径
            fs.writeFile(des_file, data, function (err) {
            if( err ){
                  console.log( err );
            }else{
                // TypeError: Assignment to constant variable.
                  response= {
                      message:'File uploaded successfully', 
                      filename:req.files[i].originalname
                  }
              }
              console.log( data );
              console.log(des_file);
              res.end( JSON.stringify( response ) );
          });
      });
   }
   res.end( JSON.stringify( response ) );
})

var server = app.listen(8081, function () {
 
  var host = server.address().address
  var port = server.address().port
 
  console.log("应用实例，访问地址为 http://%s:%s", host, port)
 
})
// cnpm install --save multer

//下载文件接口
app.get('/download',(req,res) => {
    res.set({
        "Content-Type":"application/octet-stream",//告诉浏览器这是一个二进制文件
        "Content-Disposition":"attachment; filename=IMG_0169.JPG"//告诉浏览器这是一个需要下载的文件
    });
    // fs.createReadStream('./public/'+'IMG_0169.JPG').pipe(res);
    // fs.createReadStream('./public/'+'QQ图片20220504091944.JPG').pipe(res);
    fs.createReadStream('./public/'+'QQ图片20220504091944.gif').pipe(res);
});

// 'D:\school\node\lab12.nodejs\public\QQ图片20220504091944.gif']
// 他要放的文件是这个